// pages/common/components/cart/cart.js
const app = getApp();
Component({
  /**
   * 组件的属性列表
   */
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    // scroll-view的高度
    scrollViewHeight: 0,
    // 页面总高度将会放在这里
    windowHeight: 0,
    //页面宽度
    screenWidth:0,

    //总金额
    total: 0,

    isShowDialog: false, //是否显示选择商品对话框
    dialogType: "change", //对话框类型： change 修改
    dialogNumValue:0,     //修改购物车商品数量的值
    deteleDialogShow:false,   //是否显示删除商品对话框
    buttons: [{ text: '取消' }, { text: '确定' }],    
    goodsList: [], //商品列表
    goods:null,//购物车商品
    delId:0//要删除的商品id
  },
  lifetimes: {
    // 生命周期函数，可以为函数，或一个在methods段中定义的方法名
    attached: function() {
      this.getScrollHight();
      console.log('cart', "attached");
      //购物车页面加载，获取购物车列表
      this.queryList();
    },
  },

  /**
   * 组件的方法列表
   */
  methods: {
    queryList() {
      console.log(111);
      let _this = this;
      var header = app.globalData.header; //获取app.js中的请求头
      wx.request({
        url: app.globalData.ipPort +'/front/shoppingcar/query/my',
        method: 'get',
        header:header,
        success(res) {
          if (res.data.code == 200) {
            var data = res.data.data
            var t = 0;
             for (var i = 0; i < data.length; ++i) {
               t=t+data[i].allPrice;
            //   data[i].imgBase64 = data[i].imgBase64.replace(/[\r\n]/g, "");
             }
          
            _this.setData({
              goodsList: res.data.data,
              total:t
            })
          } else {
            wx.showToast({
              title: res.data.msg,
              icon: "none"
            })
          }
        }, fail(res) {
          wx.showToast({
            title: res.msg,
            icon: "none"
          })
        }
      })
    },
    /**
     * 修改商品数量
     */
    change_num:function(e){
      console.log("========" + e.currentTarget.dataset.item.id);
      this.setData({
        dialogType: "change",
        dialogNumValue: e.currentTarget.dataset.item.buyCount,
        isShowDialog:true,
        goods: e.currentTarget.dataset.item
        
      })
    
    },
    /**
     * 删除商品
     */
    delete_goods:function(e){
      this.setData({
        //显示删除提示对话框
        deteleDialogShow: true,
        delId: e.currentTarget.dataset.item.id
      })
    },

    /**
     * 商品数量对话框取消按钮事件监听
     */
    _cancelEvent(e) {
      console.log('你点击了取消:');
      console.log(e);
      //do something when cancle is clicked
      this.setData({
        isShowDialog: false
      })
    },
    /**
     * 商品数量对话框确定按钮事件监听
     */
    _confirmEvent(e) {
      console.log('你点击了确定:');
      console.log(e);
      ////do something when sure is clicked
      this.setData({
        isShowDialog: false
      });
      console.log(e.detail.num)
      this.goodsEdit(e.detail.num);
    },
    /**
     * 删除对话框按钮点击
     */
    deteltDialogBtn:function(e){
      this.setData({
        deteleDialogShow:false
      });
      console.log(e.detail.item.text)
      if (e.detail.item.text==="确定"){   //确定按钮点击
        console.log(e.detail.item.text)
        this.delgoods(this.data.delId);   
      }
      
    },
    /**
     * 购物车商品修改
     */
    goodsEdit(newCount){
      var _this = this;
      console.log("购物车商品ID"+_this.data.goods.id)
      wx.request({
        url: app.globalData.ipPort +'/front/shoppingcar/edit',
        method: 'post',
        header: {
          'Cookie': app.globalData.header.Cookie,
          'Content-Type': 'application/x-www-form-urlencoded'
        },
        data: {
          shoppingCarGoodsId: _this.data.goods.id,
          goodsId: _this.data.goods.goodsId,
          buyCount: newCount
        },
        success(res) {
          if (res.data.code == 200) {
            wx.showToast({
              title: "修改成功",
              icon: "none"
            })
            _this.clear();
            _this.queryList();
          } else {
            _this.clear();
            wx.showToast({
              title: res.data.msg,
              icon: "none"
            })
          }
        }, fail(res) {
          _this.clear();
          wx.showToast({
            title: res.msg,
            icon: "none"
          })
        }
      })
    },
    /**
     * 删除接口
     */
    delgoods(id) {
      var _this = this;
      console.log("购物车商品ID" + id)
      wx.request({
        url: app.globalData.ipPort +'/front/shoppingcar/delete/'+id,
        method: 'post',
        header: {
          'Cookie': app.globalData.header.Cookie,
        },
        success(res) {
          if (res.data.code == 200) {
            wx.showToast({
              title: "删除成功",
              icon: "none"
            })
            _this.clear();
            _this.queryList();
          } else {
            _this.clear();
            wx.showToast({
              title: res.data.msg,
              icon: "none"
            })
          }
        }, fail(res) {
         
          wx.showToast({
            title: res.msg,
            icon: "none"
          })
        }
      })
    },
    clear(){
      this.setData({
        goods: null,
        delId: 0
      })
    },
    submitOrder(){
      //提交订单
      var goodStr = JSON.stringify(this.data.goodsList); //购买的商品
      wx.navigateTo({
        url: "/pages/common/pages/submitorder/submitorder?goodList=" + goodStr+"&total="+this.data.total,
      })
    },
    
    /**
   * 计算scroll view 的高度
   */
    getScrollHight() {
      // 先取出页面高度 windowHeight
      let _this = this;
      wx.getSystemInfo({
        success: function (res) {
          _this.setData({
            windowHeight: res.windowHeight,
            screenWidth:res.windowWidth
          });
        }
      });

      // 根据文档，先创建一个SelectorQuery对象实例
      let query = wx.createSelectorQuery().in(this);
      // 然后取出bottom的节点信息
      // 选择器的语法与jQuery语法相同;
      query.select('.bottom').boundingClientRect();

      // 执行上面所指定的请求，结果会按照顺序存放于一个数组中，在callback的第一个参数中返回
      query.exec((res) => {
        // 取出bottom的高度
        let bottomHeight = res[0].height;
        
        //计算底部toolbar的高度(toolbar 的高度是120rpx)
        let toolbarHight = this.data.screenWidth / 750 * 120;

        // 然后就是做个减法
        let scrollViewHeight = this.data.windowHeight - bottomHeight - toolbarHight;

        // 算出来之后存到data对象里面
        this.setData({
          scrollViewHeight: scrollViewHeight
        });
      });
    }
  }
})